wmproxywmproxy已用Rust实现http/https代理,socks5代理,反向代理,静态文件服务器,四层TCP/UDP转发,七层负载均衡,内网穿透,后续将实现websocket代理等,会将实现过程分享出来,感兴趣的可以一起造个轮子项目地址国内:https://gitee.com/tickbh/wmproxygithub:https://github.com/tickbh/wmproxy简单介绍websocketWebSocket是一种在单个TCP连接上进行全双工通信的协议,它使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。WebSocket通信协议于
目录1、使用Vector储存列表1.1 新建vector1.2 更新vector1.3 读取vector的元素1.4 遍历vector中的元素1.5 使用枚举来储存多种类型1.6 丢弃vector时也会丢弃其所有元素2、使用字符串储存UTF-8编码的文本2.1 什么是字符串?2.2 新建字符串2.3 更新字符串2.3.1 使用push_str和push附加字符串2.3.2 使用+运算符或format!宏拼接字符串2.3.3 索引字符串2.3.4 字符串slice2.3.5 遍历字符串的方法2.3.6 字符串并不简单Rust标准库中包含一系列被称为 集合(collections)的非常有用的数据
大家好!我是lincyang。今天我们将探索Rust生态系统中的一些常用库。Rust的生态系统日益成熟,拥有丰富的库和框架,支持从Web服务到嵌入式开发的各种应用。我们将从不同的开发领域出发,来看看哪些Rust库可以为我们所用。基础库serde:一种用于序列化和反序列化Rust数据结构的框架。几乎是Rust中处理JSON、XML等格式的标准选择。rand:提供随机数生成功能。在进行测试或需要随机数据时非常有用。log:一个提供日志记录功能的简单日志记录宏的集合。它允许库用户选择自己的日志记录实现。regex:用于Rust的正则表达式库,提供高性能和安全的正则表达式处理。Web和Web服务开发R
大家好,我是渔夫。Rust前中期学习曲线会更陡峭一些,但是今天咱们有了AI辅助,学任何编程语言,似乎也没那么难了,不懂就往GPT去问,至少前期你会很快解决掉问题的。比如,我想读一个CSV文件,直接上GPT去咨询。它连csv里面的内容都给你生成了,这效率真高啊。首先,我们来添加外部包:使用csv和serde包。这些包可以通过在你的Cargo.toml文件中添加它们来引入。也可以选择,命令行添加:cargoaddserde--featuresderivecargoaddcsvcargoaddserde--featuresderive添加后,我们尝试遍历这个文件是否真的存在数据。代码如下:usecs
什么是所有权?Rust的核心功能(之一)是 所有权(ownership)。虽然该功能很容易解释,但它对语言的其他部分有着深刻的影响。所有程序都必须管理其运行时使用计算机内存的方式。一些语言中具有垃圾回收机制,在程序运行时有规律地寻找不再使用的内存,例如:Java、Go;在另一些语言中,程序员必须亲自分配和释放内存,例如:C、C++。Rust则选择了第三种方式:通过所有权系统管理内存,编译器在编译时会根据一系列的规则进行检查。如果违反了任何这些规则,程序都不能编译。在运行时,所有权系统的任何功能都不会减慢程序。因为所有权对很多程序员来说都是一个新概念,需要一些时间来适应。随着你对Rust和所有权
大家好,我叫渔夫。Rust如果你掌握了,开发速度也是惊人的,如还不够熟悉基本概念、特性、标准库等使用,那么写Rust无疑就是和编辑器做斗争的,前期非常痛苦,还好现在的IDE非常智能。今天,我们来一起看这个非常实用的Trait。DropDrop 的作用就是释放实现者的实例拥有的资源,意思是当一个值的拥有者消失的时候,Rust会丢弃这个值,通常用于资源清理。实际中,比如关闭文件、网络连接或释放内存等等场景。例子:structFileResource{}implDropforFileResource{fndrop(&mutself){println!("FileResource被销毁,资源被释放。"
大家好,我是渔夫。今天,让我们一起深入学习Rust中的切片。在Rust编程语言中,除了常见的String类型,还有一种重要的字符串类型:str。这种类型通常被称为字符串切片(slice)。字符串切片可以理解为对一个字符串的部分或全部的引用。这意味着切片可以有任意长度,它的灵活性在某种程度上与Golang语言中的切片相似。当我们谈论切片的引用时,实际上我们是在引用一种特殊的指针,通常称为“胖指针”。这个指针不仅包含了对数据的引用,还包含了切片的长度信息。让我们通过下面的代码示例来具体分析这一概念,下面从 String 变量 s 创建了两个切片 s1 和 s2:fnmain(){lets=Stri
slvelte是一个流行的前端JavaScript框架,以其简单性和性能而闻名。另一方面,Rust是一种系统编程语言,以其内存安全性、速度和并发性而闻名。结合这两种技术可以产生强大而高效的web应用程序。在这篇文章中,我们将探索如何在前端使用slvelte,在后端使用Rust来创建一个web应用程序。设置后端设置web应用程序的第一步是创建后端。我们将使用Rust的Rocket框架创建一个RESTAPI,它将作为我们的slvelte应用程序的后端。创建一个Rust项目:cargonewrust-backend接下来,通过向Cargo.toml文件中添加Rocket框架到项目中:[depende
1.摘要Rust中的泛型可以让我们为像函数签名或结构体这样的项创建定义,这样它们就可以用于多种不同的具体数据类型。下面的内容将涉及泛型定义函数、结构体、枚举和方法,还将讨论泛型如何影响代码性能。2.在函数定义中使用泛型当使用泛型定义函数时,本来在函数签名中指定参数和返回值的类型的地方,会改用泛型来表示。采用这种技术,使得代码适应性更强,从而为函数的调用者提供更多的功能,同时也避免了代码的重复。看下面的代码例子,定义了两个函数,功能都差不多,作用是分别寻找slice中最大的i32和slice中最大的char,只是数据类型不同。fnlargest_i32(list:&[i32])->&i32{le
项目中采用wss来建立的前后端连接,但是并没有用到认证的证书,所以自己用openssl生成了私钥,自签名证书来使用:这里就不再赘述Wss连接过程,直接上手操作:1.生成私钥,证书:请查看分类"开发工具"=>使用openssl安装和生成证书2.rust服务端:将生成的 server.crt和server.key放到 d:\\User\\Desktop\\wss\\openssl目录下依赖:[dependencies]rustls="0.19.0"tokio-rustls="0.22.0"tokio={version="1",features=["full"]}tokio-tungstenite